# -*- coding: utf-8 -*-
# Author: xiantingDeng
# File: 02_python语言的动态行.py
# Time: 20:12

# 类添加属性
"""
class Person(object):
    def __init__(self, newName, newAge):
        self.name = newName
        self.age = newAge


laowang = Person("老王", 10000)
print(laowang.name)
print(laowang.age)
laowang.addr = "北京...."
print(laowang.addr)


laozhao = Person("老赵", 18)
#print(laozhao.addr)

Person.num = 100 # 给类添加属性
print(laowang.num)
print(laozhao.num)
"""

import types

class Person(object):
    def __init__(self, newName, newAge):
        self.name = newName
        self.age = newAge

    def eat(self):
        print("-----%s正在吃----" % self.name)


def run(self):
    print("-----%s正在跑----" % self.name)


p1 = Person("p1", 10)
p1.eat()
# Person.run = run
p1.run = types.MethodType(run,p1)# 使用types方法将run传递至Person
# p2 = Person("p2",20)

# print(p2.run())
p1.run()  # 虽然p1对象中 run属性已经指向了10行的函数,,,但是这句代码还不正确
# 因为run属性指向的函数 是后来添加的,几p1.run()的时候,并没有把p1当做第
# 1个参数,导致了第10行的函数调用的时候, 出现缺少参数的问题

# 第二种方法
Person.run = run
p2 = Person("p2",10)
p2.run()
